/**
 * 描述: 初始化路由信息，自定义全局异常处理
 * 作者: 
 * 日期: 
 */

const express = require('express');
const userRouter = require('./users'); // 引入user路由模块
const taskRouter = require('./tasks'); // 引入task路由模块
const weixinRouter = require('./weixin'); // 引入weixin路由模块
const { jwtAuth } = require('../utils/user-jwt'); // 引入jwt认证函数
const router = express.Router(); // 注册路由 



router.use(jwtAuth); // 注入认证模块
router.use('/api', weixinRouter); //注入微信路由模块
router.use('/api', userRouter); // 注入用户路由模块
router.use('/api', taskRouter); // 注入任务路由模块

// 自定义统一异常处理中间件，需要放在代码最后
router.use((err, req, res, next) => {


    // 自定义用户认证失败的错误返回
    if (err && err.name === 'UnauthorizedError') {

        const { status = 401, message } = err;
        if (req.path == '/api/gardenInfo') {
            res.render('error', {
                message: {
                    code: status,
                    msg: 'token失效，请重新登录',
                    data: null
                }
            });
        } else {
            // 抛出401异常
            res.status(status).json({
                code: status,
                msg: 'token失效，请重新登录',
                data: null
            });
        }

    } else {
        const { output } = err || {};
        // 错误码和错误信息
        const errCode = (output && output.statusCode) || 500;
        const errMsg = err.message || (output && output.payload && output.payload.error);
        res.status(errCode).json({
            code: errCode,
            msg: errMsg
        })
    }
})

module.exports = router;